package com.sybil.ot.dominio;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

@Embeddable
public class TareaPK implements Serializable {

   private String claveTipoTrabajo;
   private String claveTarea;

   public TareaPK() {
   }

   public TareaPK(String tipoTrabajo, String tarea) {
      this.claveTipoTrabajo = tipoTrabajo;
      this.claveTarea = tarea;
   }

   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 4, message = "La Clave de tipo de trabajo debe estar entre 1 y 4 caracteres")
   @Column(name = "TAOT_TIOT_CLAVE")
   public String getClaveTipoTrabajo() {
      return claveTipoTrabajo;
   }

   public void setClaveTipoTrabajo(String claveTipoTrabajo) {
      this.claveTipoTrabajo = claveTipoTrabajo;
   }

   @Basic(optional = false)
   @NotNull
   @Pattern(regexp = "^[a-zA-Z0-9_]*$", message = "Sólo se aceptan letras, números y '_'")
   @Size(min = 1, max = 4, message = "La Clave debe tener entre 1 y 4 caracteres")
   @Column(name = "TAOT_CLAVE")
   public String getClaveTarea() {
      return claveTarea;
   }

   public void setClaveTarea(String claveTarea) {
      this.claveTarea = claveTarea;
   }

   @Override
   public int hashCode() {
      int hash = 0;
      hash += (claveTipoTrabajo != null ? claveTipoTrabajo.hashCode() : 0);
      hash += (claveTarea != null ? claveTarea.hashCode() : 0);
      return hash;
   }

   @Override
   public boolean equals(Object object) {
      if (!(object instanceof TareaPK)) {
         return false;
      }
      TareaPK other = (TareaPK) object;
      if ((this.claveTipoTrabajo == null && other.claveTipoTrabajo != null) || (this.claveTipoTrabajo != null && !this.claveTipoTrabajo.equals(other.claveTipoTrabajo))) {
         return false;
      }
      if ((this.claveTarea == null && other.claveTarea != null) || (this.claveTarea != null && !this.claveTarea.equals(other.claveTarea))) {
         return false;
      }
      return true;
   }

   @Override
   public String toString() {
      return "com.sybil.ot.dominio.TareaPK[ tipoTrabajo=" + claveTipoTrabajo + ", tarea=" + claveTarea + " ]";
   }
}
